사용자로부터 정보를 입력 받는 양식을 작성하는 양식 그룹을 나타낸다. 양식 요소에 입력된 값은 서버에 전송될 수 있으며 자체적으로 사용하기도 한다.
플로우 콘텐츠(flow content)가 예상되는 위치
플로우 콘텐츠(flow content)이지만 하위에 다른 <form>
요소가 없어야 한다.
[Exposed=Window,
LegacyOverrideBuiltIns,
LegacyUnenumerableNamedProperties]
interface HTMLFormElement : HTMLElement {
[HTMLConstructor] constructor();
[CEReactions] attribute DOMString acceptCharset;
[CEReactions] attribute USVString action;
[CEReactions] attribute DOMString autocomplete;
[CEReactions] attribute DOMString enctype;
[CEReactions] attribute DOMString encoding;
[CEReactions] attribute DOMString method;
[CEReactions] attribute DOMString name;
[CEReactions] attribute boolean noValidate;
[CEReactions] attribute DOMString target;
[CEReactions] attribute DOMString rel;
[SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
[SameObject] readonly attribute HTMLFormControlsCollection elements;
readonly attribute unsigned long length;
getter Element (unsigned long index);
getter (RadioNodeList or Element) (DOMString name);
undefined submit();
undefined requestSubmit(optional HTMLElement? submitter = null);
[CEReactions] undefined reset();
boolean checkValidity();
boolean reportValidity();
};
<form></form>
양식(form)을 제출할 때 사용되는 문자 인코딩을 지정한다.
필요한 경우 공백으로 구분된 복수의 문자 인코딩을 지정할 수도 있다. 일반적으로 생략하여 양식(form)을 포함한 문서의 기본 문자 인코딩을 사용한다.
<form accept-charset="UTF-8">
</form>
양식을 제출할 URL을 지정한다. 즉 작성된 데이터를 받아서 처리하는 서버 로직이 위치하는 URL을 의미한다.
문자열에서 선행 및 후행 ASCII 공백을 제거한 후 유효한 비공백 URL인 경우 문자열은 공백으로 둘러싸일 수 있는 유효한 비공백 URL을 나타낸다.
<form action="/process/register.php">
</form>
양식(form) 내에 있는 입력 요소들의 자동 채우기 설정을 지정한다. 자동 채우기는 다음과 같이 두 가지 방식이 가능하다.
on
키워드는 활성되고 off
키워드는 비활성된다. 생략될 수 있으며 생략되거나 유효하지 않은 경우에 기본값은 on
이다. type
애트리뷰트가 hidden
이 아닌 경우 사용된다.on
과 off
키워드는 사용할 수 없다. type
애트리뷰트가 hidden
인 경우 사용된다.지금까지의 내용은 HTML Standard 표준 사양에 나와있는 내용이지만 자동 완성 앵커 맨틀(autofill anchor mentle)에 대해 다음과 같은 이슈가 있다.
type
이 hidden
인 요소에게 자동 완성 기능 적용이 올바른가? [open issue]현재로서는 이 이슈에 대해 앞으로 시간을 두고 확인이 필요해 보이며 일반적인 자동 완성 기능인 자동 완성 기대 맨틀(autofill expectation mantle)의 구현을 위한 애트리뷰트라고 보는 편이 나을 것 같다.
<form autocomplete="off">
</form>
양식(form)을 서버에 전송할 때 전송되는 데이터의 인코딩(MIME) 유형을 지정한다.
양식 전송의 기본 유형이다. 텍스트를 인코딩(encoding)하여 전송한다. 공백은 +
, 알파벳과 숫자가 아닌 특수 문자들은 모두 퍼센트 인코딩(percent encoding)을 한다.
<form>
<input type="text" name="name" value="Eric Clapton">
<input type="text" name="formula" value="a + b == 13%!">
</form>
name=Eric%20Clapton&formula=a%20%2B%20b%20%3D%3D%2013%25%21
데이터 전송시 텍스트를 포함하여 바이너리(binary) 데이터를 함께 전송한다. 문자열은 인코딩(encoding)하지 않고 바이너리(binary) 데이터와 함께 헤더(header)에 포함하여 전송한다.
GET
방식으로 전송할 수 없으며 POST
방식으로만 가능하다.
텍스트만 전송이 가능하며 공백만 +
로 인코딩한다.
양식(form)을 서버에 전송할 때 전송 방식을 지정한다.
제한된 값 집합으로 구성된 데이터를 나타낸다. 값 설정을 위한 다양한 방식이 존재할 수 있다.
양식(form)이 있는 <dialog>
요소에서 지정할 수 있으며 사용자가 누른 전송 버튼에 따라 처리를 분기하고자 할 때 사용할 수 있다.
사용자가 누른 전송 버튼의 값은 HTMLDialogElement
인터페이스의 returnValue
프로퍼티로 접근이 가능하다.
양식(form)의 action
URL 뒤에 붙여 쿼리 스트링(query string) 형식으로 전송한다. 기본 URL을 포함하여 최대 255개의 문자를 전송할 수 있다.
데이터가 노출되어 전송이 되기 때문에 보안에 취약하니 보안이 필요한 데이터는 절대 피한다. 캐시(cache)가 되므로 재전송이 가능하며 똑같은 결과를 가져온다. URL의 일부이기 때문에 특정 데이터에 따라 차별되는 웹페이지를 호출할 수 있다.
전송 프로토콜(protocol)의 헤더(header)에 정해진 규약에 따라 데이터가 포함되어 전송된다. 외부에 직접적으로 노출되지 않기 때문에 GET
방식보다는 보안이 덜 취약하다. 바이너리(binary) 데이터를 전송할 수 있는 환경을 제공하기 때문에 파일을 전송하고자 할 때는 enctype
을 multipart/form-data
로 설정하면 된다.
GET
과 달리 캐시(cache)가 안되며 재전송을 암묵적(보통 유저 에이전트의 확인 절차가 있으나 절대 금지가 아님)으로 금지하지만 정상적인 재전송이 이루어지는 경우 중복처리가 될 수 있으므로 재전송을 방지하는 인터페이스가 필요하다.
요소의 이름을 지정한다. 유저 에이전트(user agent)에서 식별값으로 사용되며 입력 요소에 지정된 name
의 값은 서버에 전송시 데이터를 식별하는 이름으로 사용된다. 식별값으로 사용되지만 유일무이한 값으로 강제하지는 않는다. 그러한 이유는 <input type="checkbox">
요소를 통해 이해할 수 있다. 체크박스 입력 방식은 준비된 동일한 이름의 데이터에서 다른 값을 선택하는 식이다. 따라서 값은 달라도 데이터의 이름은 동일할 수 있다.
<form>
요소에서 name
애트리뷰트가 HTML5에서 폐기되었다. 대신에 id
애트리뷰트를 식별값으로 사용한다.비워있지 않는 문자열을 나타낸다.
양식(form)의 식별 이름을 지정한다.
양식(form)을 서버에 전송시 입력된 데이터에 대한 유효성 검사를 하지 않는다.
불리언(boolean
) 값을 나타낸다. 예를 들어 다음 세 가지 값은 모두 참(true
)이다.
<input disabled>
, <input disabled="disabled">
, <input disabled="">
<form>
요소에서의 명시는 하위의 모든 입력 요소들의 유효성 검증을 하지 않겠다는 의미를 갖는다. 요소가 아닌 하위 입력 요소에서 개별적으로 유효성 검증을 우회할 수도 있다.
<form novalidate>
</form>
하이퍼링크 또는 기타 연결을 설정하는 경우 연결된 리소스를 여는 방식을 지정한다.
양식(form)의 데이터를 최종적으로 전송할 때 action
애트리뷰트에 설정된 URL을 여는 방법을 설정한다.
target
애트리뷰트의 역할은 없다고 볼 수 있다.새로 생성한 창(또는 탭)에 보여준다.
현재 페이지가 프레임 안에 존재하는 경우 부모 프레임(창)에서 보여준다.
현재 창에서 보여준다.
현재 문서가 프레임 안에 존재하는 경우를 포함하여 다수의 프레임이 연관되어 있다면 최상위 프레임(창)에서 보여준다.
리소스를 연결하는 경우 관계를 정의한다. 연결 유형은 지정된 값을 공백으로 구분한 리스트로 작성해야 한다. 그러나 특별히 명시된 경우를 제외하고는 두 번 이상 지정할 수 없다.
순서가 없는 공백으로 구분된 고유한 토큰 세트를 나타낸다.
target
애트리뷰트에서 언급한 것 처럼 현대의 웹은 양식(form) 처리 페이지가 사용자가 직접적으로 인지하지 못하는 방식으로 동작한다. 따라서 rel
애트리뷰트 역시 현대의 웹에서는 역할은 없다고 볼 수 있다.
사용되는 요소가 <link>
이고 stylesheet
키워드가 설정된 경우라면 추가적으로 alternate
키워드를 지정하는 경우 대체 스타일 시트로 연결된다. 이 경우 빈 문자열 값을 허용하지 않으며 유효한 값을 가진 title
애트리뷰트가 반드시 존재해야 한다.
일반적으로 외부의 CSS 파일을 연결할 때 <link>
요소를 사용하므로 주로 위와 같은 경우처럼 alternate
가 사용된다.
<a>
, <area>
, <link>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
작성자에 대한 정보 및 작성자와 연락 가능한 연락처 정보가 담긴 페이지로 연결되는 하이퍼링크로 정의한다.
<a>
, <area>
, <link>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
가장 가까운 조상 <article>
요소에 대해 퍼머링크(permalink)를 제공하는 하이퍼링크로 정의한다. 만약에 <article>
요소가 없다면 <link>
요소와 가장 가까운 관계를 가지고 있는 섹션(section)에 대한 퍼머링크(permalink)로 인식된다.
<a>
, <area>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
현재 문서의 기본 URL을 지정한다.
<link>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
유저 에이전트(user agent)가 대상 리소스의 출처에 대한 DNS 확인을 선제적으로 수행하도록 지정한다.
<link>
요소에서 외부 리소스(external resource)로 사용이 가능하다.
연결될 문서가 현재 웹사이트 외부의 리소스임을 알린다.
<a>
, <area>
, <form>
요소에서 하이퍼링크(hyperlink) 어노테이션(annotation)으로 사용된다.
상황에 맞는 도움말에 대한 링크를 제공한다.
만약 <a>
요소이거나 <area>
요소이면 help
는 하이퍼링크가 부모와 자손 요소에 대한 추가 도움말을 제공하는 리소스임을 나타낸다.
<link>
요소라면 help
는 하이퍼링크가 페이지 전체에 대한 추가 도움말을 제공하는 리소스임을 나타낸다.
<a>
, <area>
, <link>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
현재 문서를 나타내는 아이콘을 가져오는 것으로 처리한다. 때때로 icon
앞에 shortcut
유형을 작성하는 경우가 있는데 이는 비표준이며 웹브라우저가 무시하므로 사용하지 않아야 한다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
icon
유형을 사용하지 않을 수 있다. 더 자세한 사항은 iOS의 사파리(safari) 웹브라우저의 최신 기술 명세를 확인하라.현재 문서의 주요 콘텐츠가 하이퍼링크(hyperlink)로 참조된 문서에 설명된 저작권 라이선스의 적용을 받는다는 것을 나타낸다.
<a>
, <area>
, <link>
, <form>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
애플리케이션의 매니페스트(manifest)를 가져오거나 연결한다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
단색의 투명한 배경을 갖는 SVG 아이콘을 나타낸다. color
애트리뷰트와 함께 사용될 수 있다. W3C 명세에는 반드시 지원하지 않아도 되는 것으로 정했다. 따라서 모든 최신 유저 에이전트가 지원한다고 보기 어렵다.
유저 에이전트(user agent)가 모듈 스크립트(moduel script)를 선제적으로 가져와 나중에 평가할 수 있도록 문서의 모듈 맵(moduel map)에 저장하도록 지정한다. 선택적으로 모듈의 종속성도 가져올 수 있다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
현재 문서가 구조화된 문서의 일부이며 하이퍼링크(hyperlink)로 연결될 문서가 다음 순서에 해당하는 것을 의미한다.
<a>
, <area>
, <link>
, <form>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
현재 문서의 게시자(또는 원저자)가 연결될 문서를 보증하지 않음을 나타낸다.
<a>
, <area>
, <form>
요소에서 하이퍼링크(hyperlink) 어노테이션(annotation)으로 사용된다.
하이퍼링크(hyperlink)가 현재 문서와 컨텍스트(context)가 단절되어 열린다. 즉 하이퍼링크(hyperlink)로 열린 문서에서 window.opener
속성 값은 null
을 갖는다. 신뢰할 수 없는 문서를 연결할 때 유용하다. target
애트리뷰트는 기본적으로 _blank
로 적용된다.
<a>
, <area>
, <form>
요소에서 하이퍼링크(hyperlink) 어노테이션(annotation)으로 사용된다.
하이퍼링크(hyperlink) 연결을 정의한 현재 문서를 하이퍼링크(hyperlink)로 열릴 문서에서 참조하도록 헤더(header)에 포함시키지 않는다. 즉 문서를 열게한 문서와 단절된다는 측면에서 noopener
와 동일한 작용을 한다고 할 수 있다.
<a>
, <area>
, <form>
요소에서 하이퍼링크(hyperlink) 어노테이션(annotation)으로 사용된다.
하이퍼링크(hyperlink)로 열릴 문서는 현재 문서의 탐색 컨텍스트(context)를 포함한다. 즉 noopener
와 반대 작용을 한다고 볼 수 있다.
<a>
, <area>
, <form>
요소에서 하이퍼링크(hyperlink) 어노테이션(annotation)으로 사용된다.
현재 문서에 대한 핑백(pingback)을 처리하는 핑백(pingback) 서버의 주소를 지정한다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
유저 에이전트가 대상 리소스의 오리진(origin)에 선제적으로 연결하도록 지정한다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
후속 탐색이 가능하도록 유저 에이전트가 대상 리소스를 선제적으로 가져와 캐시(cache)하도록 지정한다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
유저 에이전트가 as
애트리뷰트에 지정된 잠재적 목적지와 연결 우선 순위에 따라 현재 탐색을 위해 대상 리소스를 선제적으로 가져와 캐시(cache)하도록 지정한다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
현재 문서가 구조화된 문서의 일부이며 하이퍼링크(hyperlink)로 연결될 문서가 이전 순서에 해당하는 것을 의미한다.
<a>
, <area>
, <link>
, <form>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
현재 문서 및 관련 페이지를 검색하는 데 사용할 수 있는 리소스에 대한 링크를 나타낸다.
<a>
, <area>
, <link>
, <form>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
현재 문서에 스타일시트 문서를 리소스로 가져온다.
<link>
요소만 외부 리소스(external resource)로 사용이 가능하다.
하이퍼링크가 현재 문서에 적용되는 태그를 설명하는 문서임을 나타낸다.
<a>
, <area>
요소에서 하이퍼링크(hyperlink)로 사용이 가능하다.
일부 글로벌 애트리뷰트는 이 요소에서 사용되지 않을 수 있다.
일부 글로벌 이벤트 핸들러는 이 요소에서 사용되지 않을 수 있다. 이벤트 등록은 자바스크립트 사용을 권장한다.